import PySimpleGUI as sg
import openpyxl
from openpyxl.styles import Font
import os

# 设置主题
sg.theme('LightGrey1')

# 定义布局
layout = [
    [],
    [sg.Text('Excel 表格1'),sg.InputText(key='-FILE1-', enable_events=True), sg.FileBrowse(file_types=(("Excel Files", "*.xlsx"),)),sg.Text('列号'), sg.InputText('F', key='-COL1-',size=(5, 1)),sg.InputText('G', key='-COL2-',size=(5, 1))],
    [],
    [],
    [sg.Text('Excel 表格2'),sg.InputText(key='-FILE2-', enable_events=True), sg.FileBrowse(file_types=(("Excel Files", "*.xlsx"),)),sg.Text('列号'), sg.InputText('J', key='-COL3-',size=(5, 1))],
    [],
    [sg.Button('提交')]
]

# 创建窗体
window = sg.Window('Excel 表格输入', layout)

# 事件循环
while True:
    event, values = window.read()
    if event in (sg.WIN_CLOSED, '提交'):
        excel_file1 = values['-FILE1-']
        excel_file2 = values['-FILE2-']
        col1 = values['-COL1-']
        col2 = values['-COL2-']
        col3 = values['-COL3-']
        # 在这里可以对 excel_file1 和 excel_file2 进行进一步的操作，比如读取数据或者执行其他操作
        print(f'Excel 文件1: {excel_file1}')
        print(f'Excel 文件2: {excel_file2}')
        print(f'列号1: {col1}')
        print(f'列号2: {col2}')
        print(f'列号3: {col3}')
        break

# 关闭窗体
window.close()
print(excel_file1)

#读取指定excel表指定列，输出这一列的值为list
def extract_column_values(filepath, column):
    wb = openpyxl.load_workbook(filepath)
    sheet = wb.active
    column_values = []
    for cell in sheet[column]:
        column_values.append(cell.value)
    return column_values
#读取excel表格指定列的内容， 给定list,如果比对上了，字体变为红色，另存为新文件,并打开
def compare(filepath, column,list1):
    wb = openpyxl.load_workbook(filepath)
    sheet = wb.active
    #column_values = []
    for cell in sheet[column]:
        #column_values.append(cell.value)
        if str(cell.value) in list1:
            print(cell.value)
        # 设置字体颜色为红色
            cell.font = Font(color="FF0000")
    # 另存为新文件
    wb.save('新的文件名.xlsx')
    os.startfile('新的文件名.xlsx')




#给定两给长度一样的列表， 合并对应项目，如果是数字，改成字符串，输出结果同样是列表
#例如['a1','b1','c1'],['a2','b2','c2']合并后成为['a1a2','b1b2','c1c2']
def combin_list(list1,list2):
    return [str(a)  + str(b) for a, b in zip(list1, list2)]


#读取表1的第一个指定列
column_F= extract_column_values(excel_file1, col1)
#读取表1的第二个指定列
column_G=extract_column_values(excel_file1, col2)
#合并两个列
combined_list=combin_list(column_F,column_G)

#比较表格2中的指定列，和给定的list
compare(excel_file2,col3,combined_list)

print('end')
